This application constitutes a continuation-in-part from, and claims priority to, U.S. patent application Ser. No. 11/114,867, entitled “Run-Time Code Injection to Perform Checks,” filed 3 Jun. 2005 and which is hereby incorporated by reference.
The invention relates generally to digital rights management and more particularly, by way of example, to performing a check at run-time to determine if a software application is authorized to execute on a specific hardware platform.
It has become common practice for computer system manufacturers to preload their hardware platforms with one or more software applications. The single, most widespread, application being the operating system. In many instances, the developer of an application may wish to restrict its execution to a specific computer system or hardware platform. Once an application has been distributed, however, the application's developer/owner has little control over its subsequent re-distribution. This is becoming an especially vexing problem in that virtually every new computer system in the marketplace includes the software and hardware needed to: make exact copies of digital content (e.g., applications and multimedia content); transfer these copies to magnetic or optical disks; and distribute these copies via a computer network (e.g., the Internet or corporate or academic intranet).
The application owner may, of course, require the user to promise not to copy, distribute or use the application on another platform as part of the transaction by which the user obtains their copy. Such promises are, however, easy to make and easy to break. The application owner may also attempt to prevent re-distribution or re-use in a number of ways, usually involving encryption and decryption of the application or the use of specialized security hardware devices (“dongles”). There is very little, however, that these approaches can do to thwart a determined user.
Thus, it would be beneficial to provide a mechanism to restrict the execution of one or more applications to a specific hardware platform that is transparent to the user.